7.3-AOT & JIT
Create by fall on 12 Jan 2023 Recently revised in 12 Jan 2023
AOT
AOT:预编译
比如 vue 文件,如果是使用浏览器模板,会导致运行时还需要编译模板内容。
在构建期间去编译我们的代码,在浏览器中我们可以直接下载并运行编译后的代码:.vue
解析后生成的 .js
。
- 更快的渲染速度
使用 AOT 后浏览器会下载应用程序编译后的代码并直接执行,而无需等待先编译应用程序。
- 更小的文件体积
因为代码已经是编译后的代码,所以在最终的产物中就不需要包含 Angular 编译器,因此他会大大减少应用的负载。
- 更早的检测代码中的错误
如果代码出现问题,不会通过预编译,在预编译时,即可发现问题
- 更好的安全性
AOT 在将 HTML 模板和组件提供给客户端之前就将其编译为 JavaScript 文件,由于没有要阅读的模板,也没有危险的客户端 HTML 或 JavaScript 评估。
- 更少的异步请求
编译器在 Javascript 中内联外部 HTML 模版和 CSS 样式,所以我们不需要单独发送 ajax 请求去请求这些文件。
JIT
Just In Time(即时编译)运行时去编译代码,每隔文件都是单独编译,更改该代码时,只需要更改该代码的文件,而不是整个项目
- 易于开发调试
在 JIT 模式下可以生成映射文件,这样便于功能的实现和调试。
- 编译时间短
因为大多数编译是在浏览器端完成的,因此编译时间会更少,因此对于一些大项目来说如果某些组件大部分时间不使用,那么此时使用 JIT 是最合适的。
- 存储热点代码
如果某个方法或者代码块执行的特别频繁,那么就会被视为 热点代码
,然后 JIT 就会对这部分代码进行编译并存储起来,下次使用时就可以直接从内存中读取。
参考文章
作者 | 链接 |
---|---|
西陵 | https://juejin.cn/post/7134209261428539422 |